iT邦幫忙

2022 iThome 鐵人賽

DAY 4
1
Software Development

C++超級菜鳥也可以懂的物件導向攻略系列 第 4

Day04 - C++好簡單之來寫一個ASCII轉換器吧!基本輸入/輸出Input/Output應用

  • 分享至 

  • xImage
  •  

我知道我知道,上一篇文章很。無。聊,為什麼要學那個cin什麼的東西?
因為要做出程式application的第一步,通常需要輸入資料 -> 輸出資料。

我們出國自由行想到處趴趴走除了搭大眾交通(火車公車)以外,還可以租車對不對?
現在租車的時候除了現場租車,相信很多人也都在網路上預訂。通常預定會需要註冊一個帳號(輸入姓名電話租車人資訊到租車公司系統),然後選擇想要的車款(公司的車型資料放在在網站上讓我們可以選擇),接著輸入起租時間日期、還車時間日期(輸入資料),輸入信用卡資料(也是輸入),確認預約,最後收到一封預約單(系統輸出),就能到租車公司櫃台領車快樂出遊了。

有沒有感覺比較有切身關係了?

如果漏掉上一篇的話Day03的直達車請點我

namespace std?

在開始示範之前,為了方便起見,因為程式碼開始變多了,需要來引薦一下namespace這位大德。
因為關於是什麼要講完有點久我們以後再來慢慢說(我們這篇是隨意解說法xd)所以先簡單記得,用了這個,前輟就不用加std::了。
來看看以下範例,我們想輸出名字到terminal可以這樣用:

std::string name = Irene;
std::cout << name << std::endl;       //std::endl是指結束換行的意思。

前面都有std::對不對?
也可以變成縮減成下面這樣:

using namespace std;
string name = Irene;
cout << name << endl;

噢厚厚,前面的std::都不見了,真是懶人福音,因此我們會用以上這樣的規格來做今後範例。


關於ASCII是什麼

容我引用一下網上已經很詳盡的簡介和cheatsheet

ASCII是基於拉丁字母的一套電腦編碼系統,局限在於只能顯示26個基本拉丁字母、阿拉伯數字和英式標點符號,在這邊我們需要對照的是Dexcimal,Dec

簡單來說就是,為什麼電腦基於二進位的運算01這樣能顯示出字母符號abc$%@&的原理就是這樣,關於這個詳細之後有空會再聊。

 cout << int(a); 
 //會顯示出什麼呢? 97

為什麼?喔這就是C++的規則,你打出int(符號or字母)然後就會輸出對應的Deximal。
相反過來如果要用數字97找出對應的字母呢?
很簡單,用char(數字),為什麼?因為abc是單個字元,%也是。
關於資料分類型態想複習請到Day02 Data Tpye

    cout << char(97);
    //你猜對了,顯示出:a
    注意是小寫的,大小寫對應的數字不同

好了,那可以請出cin來加入我們了,我們總得要跟電腦有點互動才好玩。請看以下範例:

#include <iostream>
#include <fstream>
#include <string>

using namespace std;   //懶人福音在此
int main() {
      char c1,c2,c3;
      cout << "Type three letter ";
      cin >> c1 >> c2 >> c3;
      cout << int(c1)<< " " << int(c2)<< " " << int(c3) << endl;

      int i1,i2,i3;
      cout << "Type three numbers ";
      cin >> i1 >>i2 >>i3;
      cout << char(i1)<<char(i2)<< char(i3)<<endl;

任意打了(輸入)鍵盤上的三枚”字元“,會輸出對應的ASCII碼。

電腦:Type three letter (輸出)
敲鍵盤的人:abc (輸入)
電腦:97 98 99 (輸出)

下面四行程式碼反之,輸入數字會輸出對應的字或符號。

這就是I/O,input & output。

總結,互動就是這樣開始的。

Reference:CodeBeauty(Youtube), http://dcjtech.info/wp-content/uploads/2015/10/ASCII-Cheatsheet.pdf, Wikipedia


上一篇
Day03 - C++資料輸入之cin、getline()、cin.getline()有什麼差別?
下一篇
Day05 - C++ 算數運算規則&如何指定assign
系列文
C++超級菜鳥也可以懂的物件導向攻略30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言